package rpg.engine.client;

import java.util.Collection;
import java.util.List;

import rpg.client.model.Actor;
import rpg.client.model.ClientMap;
import rpg.client.model.GameEvent;
import rpg.client.model.Position;
import rpg.client.model.Actor.Builder;
import rpg.engine.client.cache.PlayerInfo;
import rpg.engine.model.DialogInfo;
import rpg.engine.model.Mover;
import rpg.engine.model.Story;

public interface WorldCacheApi {

    void addPlayer(Actor player);

    DialogInfo getDialog(String storyID, String chatID);

    ClientMap getGameMap(String mapID);

    Collection<Mover> getMovers(String mapID);

    NpcInfo getNpc(String actorId);

    List<NpcInfo> getNpcs(String mapID);

    GameObjectInfo getObject(String objectID);

    List<GameObjectInfo> getObjects(String mapID);

    PlayerInfo getPlayerInfo(String player);

    Story getStory(String storyID);

    GameEvent objectActive(String fromID, boolean b);

    Actor registerPlayer(Builder ab);

    GameEvent updateNpcPosition(String fromID, Position toPosition);

    Position updatePlayerPosition(String playerID, Position newPosition);
}
